#!/usr/bin/python
# -*- coding: utf-8 -*-

import time
import urllib
from parsers import *
from dbEngine import DbEngineDB2
from wykopBot import *
from time import sleep
import sys
import getopt

#Constants
WYKOPALISKO = 'http://www.wykop.pl/wykopalisko/kategoria/wszystkie/'
WYKOP_GLOWNA = 'http://www.wykop.pl/kategoria/wszystkie/' 
ZAKRES = 2
USER = 'spambot'
PASSWD = 'qk26pff74b'

class Usage(Exception):
        def __init__(self,msg):
                self.msg = msg
        
        
def main(argv = None):
        if argv is None: argv = sys.argv
        try:
                try:
                        opts, args = getopt.getopt(argv[1:],"h",["help"])
            #print opts
                        #print args
                        for opt, arg in opts:
                                if opt in ('-h', '--help'):
                                        help()
                                        return 0
                except getopt.error, msg:
                        raise Usage(msg)
                ######################################## kod zaczyna się tutaj #######
                # parsowanie wykopaliska
                
                while True:
                        count = 0
                        start = time.time()
                        countParser = PageCountHtmlParser()
                        parser = HomeHTMLParser()
                        db = DbEngineDB2('localhost://')
                        bot = WykopBot(db, USER, PASSWD)
                        siteStr = fixWykopaliskoHTML(urllib.urlopen(WYKOPALISKO + '1').read())

                        countParser.feed(siteStr)
                        
                
                        for siteNum in range(1, min([ZAKRES, countParser.getPagesCount() + 1])):
                                siteStr = fixWykopaliskoHTML(urllib.urlopen(WYKOPALISKO + str(siteNum)).read())
                                print siteNum
                                parser.feed(siteStr)
                                for linkStr in parser.getLinkslist():  #dla każdego ze znalezisk w wykopalisku
                                        try:
                                                bot.updateFind(linkStr,0)
                                        except Exception:
                                                count+=1
                                                print 'Nieokreślony błąd'

                        siteStr = urllib.urlopen(WYKOP_GLOWNA + '1').read()
                        countParser = PageCountHtmlParser()
                        parser = HomeHTMLParser()
        
                        countParser.feed(siteStr)
                        for siteNum in range(1, ZAKRES):
                                iteStr = (urllib.urlopen(WYKOP_GLOWNA + str(siteNum)).read())
                                print siteNum
                                parser.feed(siteStr)
                                for linkStr in parser.getLinkslist():  #dla każdego ze znalezisk w wykopalisku
                                        try:
                                                bot.updateFind(linkStr,1)
                                        except Exception:
                                                count += 1
                                                print 'Nieokreślony błąd'
                        end = time.time()
                        print "*************************************************"
                        print "czas to:"
                        print end - start
                        print count
                        return
                        sleep(60)
        
                return 0
                ####################################### kod się tutaj kończy ##########
        except Usage, err:
                print >>sys.stderr, err.msg
                print >>sys.stderr, "for help use --help"
                return 2

def fixWykopaliskoHTML(siteStr):
        return siteStr.replace('<ul id="wykop-kinds"">','<ul id="wykop-kinds">').replace('&','')

def help():
        "To jest pomoc dla tego programu"

if __name__ == '__main__':
        sys.exit(main())
